package model.rentals;

import java.util.ArrayList;
import java.util.List;

/**
 * Classe Page que contem informacao sobre uma pagina: numero de pagina,
 * se esta marcada a pagina e anotacoes da pagina
 * @author grupo DCO37
 * 	N.º 42484 Helder Ferreira
 *  N.º 45509 Luis Ferreira
 */
public class Page {

	private boolean bookmark;
	private int pageNum;
	private List<String> annotationsOfPage;

	/**
	 * Cria uma pagina dado o seu numero
	 * @param pageNum - numero de pagina
	 */
	public Page (int pageNum) {
		this.pageNum = pageNum;
		this.bookmark = false;
		this.annotationsOfPage = new ArrayList<String>();
	}
	
	/**
	 * Adiciona uma anotacao a pagina
	 * @param text
	 */
	public void addAnnotation (String text) {
		annotationsOfPage.add(text);
	}

	/**
	 * Obtem as anotacoes da pagina
	 * @return anotacoes
	 */
	public Iterable <String> getAnnotations (){
		return this.annotationsOfPage;
	}

	/**
	 * Obtem a n-esima anotacao da pagina
	 * @param n - posicao n da lista de paginas
	 * @return String da anotacao na posicao n da lista de anotacoes
	 */
	public String getAnnotationText (int n){
		return this.annotationsOfPage.get(n);
	}

	/**
	 * Indica se a pagina esta marcada
	 * @return true se marcada, false caso contrario
	 */
	public boolean isBookmarked(){
		return this.bookmark;
	}

	/**
	 * Muda o marcador da pagina: se nao esta marcada, marca-a, 
	 * caso contrario remove o marcador
	 */
	public void toggleBookmark(){
		if (!isBookmarked()) {
			this.bookmark = true;
		}
		else // remover marcadores
			this.bookmark = false;
	}

	/**
	 * Devolve o numero da pagina
	 * @return numero de pagina
	 */
	public int getPageNum(){
		return pageNum;
	}

	/**
	 * Remove a anotacao da pagina na posicao n
	 * @param n - posicao da pagina
	 */
	public void removeAnnotation(int n){
		annotationsOfPage.remove(n);
	}

	/**
	 * Indica se a pagina tem anotacoes
	 * @return true se a pagina contem anotacoes, ou false caso contrario
	 */
	public boolean hasAnnotations(){
		return !annotationsOfPage.isEmpty();
	}
	
}
